﻿using System.Collections.Generic;

namespace ITA
{
    /// <summary>
    /// Megjegyzéshez szükséges adatok letárolására alkalmas.
    /// </summary>
    public class Megjegyzes
    {

        private List<Szoveg> _szoveglista = new List<Szoveg>();
        private string _utvonal;

        /// <summary>
        /// A file elérési útvonalára mutat.
        /// </summary>
        public string Utvonal
        {
            get { return _utvonal; }
            set { _utvonal = value; }
        }

        /// <summary>
        /// A szöveg osztály segítségével valósítja meg az adatok tárolását, melybe 4 értéket tudunk bevinni.
        /// </summary>
        public List<Szoveg> SzovegLista
        {
            get { return _szoveglista; }
            set { _szoveglista = value; }
        }

        public override string ToString()
        {
            string eredmeny = "Útvonal: " + _utvonal + "\n";
            foreach (var item in SzovegLista)
            {
                eredmeny += "Rövid szöveg: " + item.Rovid + "\n";
                eredmeny += "Hosszu szöveg: " + item.Hosszu + "\n";
                eredmeny += "Dátum: " + item.Datum + "\n";
            }
            return eredmeny;
        }

        public Megjegyzes()
        {
            _utvonal = string.Empty;
        }

        /// <summary>
        /// Eldönti, hogy a példány megegyezőnek tekinthető-e a paraméterként megadott objektummal.
        /// </summary>
        /// <param name="obj">Az összehasonlítandó objektum.</param>
        /// <returns>True, ha a két objektum megegyezik, egyébként false.</returns>
        public override bool Equals(object obj)
        {

            Megjegyzes other =  obj as Megjegyzes;
            if (obj != null && obj is Megjegyzes && _utvonal == other._utvonal && _szoveglista.Count == other._szoveglista.Count)
            {
                for (int i = 0; i < _szoveglista.Count; i++)
                {
                    if (_szoveglista[i].Equals(other._szoveglista[i]) == false)
                    {
                        return false;
                    }
                }
            }
            else
            {
                return false;
            }
                
            return true;
            

        }

        /// <summary>
        /// A példány hashcode-jával tér vissza.
        /// </summary>
        /// <returns>A példány hashcode-ja</returns>
        public override int GetHashCode()
        {
            int kod = 0;
            if (_utvonal != null)
            {
                kod += _utvonal.GetHashCode();
            }
            if (_szoveglista != null)
            {
                for (int i = 0; i < _szoveglista.Count; i++)
                {
                    if (_szoveglista[i] != null)
                    {
                        kod += _szoveglista[i].GetHashCode();
                    }
                }
            }
            return kod;
        }
    }
}